﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity.Infrastructure;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WF_Office_Verwaltung
{
    public partial class neuesGerät : Form
    {
        int akt_kunde = -1;
        string ändern = "Ändern";
        int geräteId = -1;
        nachrichten_klasse aNachrichtenKlasse = new nachrichten_klasse();
        helfer_klasse aHelferKlasse = new helfer_klasse();
        public neuesGerät(string _geräteID, int _akt_kunde)
        {
            try
            {
                geräteId = int.Parse(_geräteID);

                akt_kunde = _akt_kunde;
                InitializeComponent();
                if (geräteId != -1)
                {
                    btn_Anlegen.Text = ändern;
                    btnLöschen.Visible = true;
                    getAktuellesGerät(geräteId, akt_kunde);
                }
            }
            catch (Exception ex)
            {
                aNachrichtenKlasse.ErrorMessage("neuesGerät: getAktuellesGerät\n", ex);
            }
        }
        private void getAktuellesGerät(int geräteId, int akt_kunde)
        {
            try
            {

                using (var context = new project_entities())
                {
                    var gerät = (from g in context.Geräte
                                 where g.ID_Gerät == geräteId && g.FK_ID_Kunde == akt_kunde
                                 select new
                                 {
                                     FDNummer = g.FD_NR,
                                     Gerätetype = g.Bezeichnung,
                                     Zubehör = g.Art
                                 }).ToList();

                    txtFDNummer.Text = gerät[0].FDNummer.ToString();
                    txtGeräteType.Text = gerät[0].Gerätetype.ToString();
                    txtArt.Text = gerät[0].Zubehör.ToString();
                }

            }
            catch (Exception ex)
            {
                aNachrichtenKlasse.ErrorMessage("neuesGerät: getAktuellesGerät\n", ex);
            }
        }

        private void btn_Anlegen_Click(object sender, EventArgs e)
        {
            if (ValidateChildren(ValidationConstraints.Enabled))
            {
                string geräteTyp = txtGeräteType.Text;
                int fdNummer = int.Parse(txtFDNummer.Text);
                string art = txtArt.Text;

                using (var context = new project_entities())
                {
                    try
                    {
                        if (akt_kunde != -1 && btn_Anlegen.Text != ändern)
                        {
                            var Gerät = context.Geräte;
                            Gerät neuesGerät = new Gerät();
                            neuesGerät.FK_ID_Kunde = akt_kunde;
                            neuesGerät.Bezeichnung = geräteTyp;
                            neuesGerät.FD_NR = fdNummer;
                            neuesGerät.Art = art;
                            context.Geräte.Add(neuesGerät);
                            context.SaveChanges();

                            MessageBox.Show("Gerät wurde erfolgreich angelegt.");
                            this.Close();
                        }
                        else if (btn_Anlegen.Text == ändern)
                        {
                            Gerät neuesGerät_ = context.Geräte.First(i => i.ID_Gerät == geräteId);
                            neuesGerät_.FK_ID_Kunde = akt_kunde;
                            neuesGerät_.Bezeichnung = geräteTyp;
                            neuesGerät_.FD_NR = fdNummer;
                            neuesGerät_.Art = art;

                            context.SaveChanges();
                            MessageBox.Show("Gerät wurde erfolgreich geändert.");
                            this.Close();
                        }

                    }
                    catch (Exception ex)
                    {
                        aNachrichtenKlasse.ErrorMessage("neuesGerät: btn_Anlegen_Click\n", ex);
                    }
                }
            }
        }

        private void Validating_Geräte(object sender, CancelEventArgs e)
        {
            try
            {
                if (sender == txtGeräteType)
                {
                    erpNeuesGerät.SetError(txtGeräteType, "");

                    e.Cancel = string.IsNullOrEmpty(txtGeräteType.Text);
                    if (e.Cancel)
                    {
                        erpNeuesGerät.SetError(txtGeräteType, "Um welche Gerätetype Handelt es sich");
                    }
                    else
                    {
                        erpNeuesGerät.SetError(txtGeräteType, "");
                    }
                }
                else if (sender == txtFDNummer)
                {
                    int number = 0;
                    erpNeuesGerät.SetError(txtFDNummer, "");

                    e.Cancel = !int.TryParse(txtFDNummer.Text, out number);
                    if (e.Cancel)
                    {
                        erpNeuesGerät.SetError(txtFDNummer, "Geben Sie eine FD-NR ein.");
                    }
                    else
                    {
                        erpNeuesGerät.SetError(txtGeräteType, "");
                    }
                }

            }
            catch (Exception ex)
            {
                aNachrichtenKlasse.ErrorMessage("neuesGerät: Validating_Geräte\n", ex);
            }
        }

        private void btnLöschen_Click(object sender, EventArgs e)
        {
            try
            {
                using (var context = new project_entities())
                {
                    DialogResult diaResult = MessageBox.Show("Sind Sie sicher das Sie dieses Gerät Löschen wollen", "Gerät Löschen?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (diaResult == DialogResult.Yes)
                    {
                        Gerät löschendesGerät = context.Geräte.First(i => i.ID_Gerät == geräteId);
                        context.Geräte.Remove(löschendesGerät);
                        context.SaveChanges();
                        this.Close();
                    }

                }
            }
            catch (Exception ex)
            {
                aNachrichtenKlasse.ErrorMessage("neuesGerät: btnLöschen_Click\n", ex);
            }
        }

        private void neuesGerät_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = false;
        }


    }
}
